home *** CD-ROM | disk | FTP | other *** search
- Attribute VB_Name = "Module3"
- Option Explicit
-
- Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
- Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
- Declare Function GetForegroundWindow Lib "user32" () As Long
- Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
- Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
- Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
- Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
- Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
- Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
- Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
- Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
- Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
- Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
-
- Public Const SW_SHOW = 5
- Public Const SW_RESTORE = 9
- Public Const GW_OWNER = 4
- Public Const GWL_HWNDPARENT = (-8)
- Public Const GWL_EXSTYLE = (-20)
- Public Const WS_EX_TOOLWINDOW = &H80
- Public Const WS_EX_APPWINDOW = &H40000
-
- Public Const LB_ADDSTRING = &H180
- Public Const LB_SETITEMDATA = &H19A
- Public Sub pSetForegroundWindow(ByVal hwnd As Long)
- Dim lForeThreadID As Long
- Dim lThisThreadID As Long
- Dim lReturn As Long
-
- If hwnd <> GetForegroundWindow() Then
-
- lForeThreadID = GetWindowThreadProcessId(GetForegroundWindow, ByVal 0&)
- lThisThreadID = GetWindowThreadProcessId(hwnd, ByVal 0&)
-
- If lForeThreadID <> lThisThreadID Then
- Call AttachThreadInput(lForeThreadID, lThisThreadID, True)
- lReturn = SetForegroundWindow(hwnd)
- Call AttachThreadInput(lForeThreadID, lThisThreadID, False)
- Else
- lReturn = SetForegroundWindow(hwnd)
- End If
- If IsIconic(hwnd) Then
- Call ShowWindow(hwnd, SW_RESTORE)
- Else
- Call ShowWindow(hwnd, SW_SHOW)
- End If
- End If
- End Sub
-
- Public Function fEnumWindows(lst As ListBox) As Long
-
- With lst
- .Clear
- Call EnumWindows(AddressOf fEnumWindowsCallBack, .hwnd)
- fEnumWindows = .ListCount
- End With
- End Function
-
- Private Function fEnumWindowsCallBack(ByVal hwnd As Long, ByVal lParam As Long) As Long
- Dim lReturn As Long
- Dim lExStyle As Long
- Dim bNoOwner As Boolean
- Dim sWindowText As String
-
- If hwnd <> frmSelect.hwnd Then
- If IsWindowVisible(hwnd) Then
- If GetParent(hwnd) = 0 Then
- bNoOwner = (GetWindow(hwnd, GW_OWNER) = 0)
- lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
-
- If (((lExStyle And WS_EX_TOOLWINDOW) = 0) And bNoOwner) Or _
- ((lExStyle And WS_EX_APPWINDOW) And Not bNoOwner) Then
-
- sWindowText = Space$(256)
- lReturn = GetWindowText(hwnd, sWindowText, Len(sWindowText))
- If lReturn Then
-
- sWindowText = Left$(sWindowText, lReturn)
- lReturn = SendMessage(lParam, LB_ADDSTRING, 0, ByVal sWindowText)
- Call SendMessage(lParam, LB_SETITEMDATA, lReturn, ByVal hwnd)
- End If
- End If
- End If
- End If
- End If
- fEnumWindowsCallBack = True
- End Function
-
-
-